package com.huahua.myIdea.entity;

import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
import javax.persistence.*;
import java.util.List;

/**
 * 商品类
 *
 * 对应数据库中的goods表
 * @Entity 注解用于标记实体类，表示该类会被映射到数据库中的一个表。
 * @Table 注解用于标注实体类与数据库表之间的映射关系，并可以指定表的名称、唯一约束等信息。
 */
@Entity
@Table(name = "goods")
@Data
public class GoodsDo {
    /**
     * 商品id
     *
     * 该字段对应数据库中的列为主键
     * 主键自增长
     * 对应goods表中的id列
     *
     * @Column 注解用于标注实体类属性与数据表字段之间的映射关系，并可以指定字段名称、长度、精度等信息。
     */
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id")
    private Long id;

    /**
     * 商品名称
     *
     * 对应goods表中的name列
     */
    @Column(name = "name")
    private String name;

    /**
     * 商品价格
     *
     * 对应goods表中的price列
     */
    @Column(name = "price")
    private String price;

    /**
     * 商品描述
     *
     * 对应goods表中的pic列
     */
    @Column(name = "description")
    private String description;

    /**
     * goods 和 address 之间是一对多的关系
     * cascade 属性表示级联操作，这里使用 CascadeType.ALL 表示在删除 goods 实体时同时删除其关联的所有 address 实体
     */
    @OneToMany(fetch = FetchType.EAGER, orphanRemoval = true, cascade = CascadeType.ALL)
    @JoinColumn(name = "goods_id")
    private List<Address> address;
}
